package com.chenken.stack;

import com.chenken.list.LinkedList;
import com.chenken.list.List;

/**
 * 	栈
 *	栈是一种特殊的线性表，只能在一端进行操作
 *	往栈中添加元素的操作，一般叫push,入栈
 * 	从栈中移除元素的操作，一般叫做pop，出站
 * 	后进先出的原则 last in first out  LIFO
 * 
 */
public class Stack<E> {
	
	private List<E> list = new LinkedList<E>();

	public int size() {
		return list.size();
	}
	
	public boolean isEmpty() {
		return list.isEmpty();
	}
	
	/**
	 * 入栈
	 * @param element
	 */
	public void push(E element) {
		list.add(element);
	}
	
	/**
	 * 	出栈
	 * @return
	 */
	public E pop() {
		return list.remove(list.size()-1);
	}

	/**
	 * 	获取栈顶元素
	 * @return
	 */
	public E top() {
		return list.get(list.size()-1);
	}
}
